home *** CD-ROM | disk | FTP | other *** search
- #include "zgl.h"
-
- GLint GLAPIENTRY glRenderMode(GLenum mode) {
- GLContext *c = gl_get_context();
- int result = 0;
- /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
- switch(c->render_mode) {
- case GL_RENDER:
- break;
- case GL_SELECT:
- if(c->select_overflow) {
- result = -c->select_hits;
- }
- else {
- result = c->select_hits;
- }
-
- c->select_overflow = 0;
- c->select_ptr = c->select_buffer;
- c->name_stack_size = 0;
- break;
- default:
- assert(0);
- }
-
- switch(mode) {
- case GL_RENDER:
- c->render_mode = GL_RENDER;
- break;
- case GL_SELECT:
- c->render_mode = GL_SELECT;
- assert(c->select_buffer != NULL);
- c->select_ptr = c->select_buffer;
- c->select_hits = 0;
- c->select_overflow = 0;
- c->select_hit = NULL;
- break;
- default:
- assert(0);
- }
-
- return result;
- }
-
- /* */
- void GLAPIENTRY glSelectBuffer(GLsizei size, GLuint *buf) {
- GLContext *c = gl_get_context();
-
- assert(c->render_mode != GL_SELECT);
-
- c->select_buffer = buf;
- c->select_size = size;
- }
-